package cn.yitun.chat.yitunserverimbase.dao.group;

import cn.yitun.chat.yitunservercommonlib.crud.yitun.CrudDao;
import cn.yitun.chat.yitunservercommonlib.dataentity.dto.group.GroupRelationDto;
import cn.yitun.chat.yitunservercommonlib.dataentity.po.group.GroupRelationInfo;
import cn.yitun.chat.yitunservercommonlib.dataentity.vo.group.GroupRelationVo;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 群组分类成员表
 * @author chenyitun
 * @email chenyitun@163.com
 * @date 2020-06-24 19:05:06
 */
@Mapper
public interface GroupRelationDao extends CrudDao<GroupRelationDto, GroupRelationInfo, GroupRelationVo> {

	int absDel(Long id);

	int batchAbsDel(Long[] ids);

	/**
	 * 获取关联
	 * @param userId
	 * @param groupId
	 * @return
	 */
	GroupRelationVo getVOByGroupId(@Param("userId") Long userId,@Param("groupId") Long groupId);

	/**
	 * 移动分组
	 * @param userId
	 * @param id
	 * @param newCategoryId
	 * @return
	 */
    int updateChangeCategoryId(@Param("userId") Long userId,
							   @Param("id") Long id,
							   @Param("newCategoryId") Long newCategoryId);

	/**
	 * 删除除群主外的所有群关联信息
	 * @param groupId
	 * @param ownerUserId
	 * @return
	 */
	int deleteOutUserIdByGroupId(@Param("groupId") Long groupId,
								 @Param("ownerUserId") Long ownerUserId);

	/**
	 * 删除
	 * @param userId
	 * @param groupId
	 * @return
	 */
	int deleteGroupCategoryMember(@Param("userId") Long userId,
								  @Param("groupId") Long groupId);
    /**
     * 移动分组
     * @param userId
     * @param groupId
     * @param categoryId
     * @return
     */
    int updateGroupCategoryId(@Param("userId") Long userId,
                              @Param("groupId") Long groupId,
                              @Param("categoryId") Long categoryId);

    /**
     * 更新备注
     * @param userId
     * @param groupId
     * @param remark
     * @return
     */
    int updateRemark(@Param("userId") Long userId,
                     @Param("groupId") Long groupId,
                     @Param("remark") String remark);
}
